/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
ListNode\* addTwoNumbers\(ListNode\* l1, ListNode\* l2\) {
int flag=0;int temp;
ListNode \*head,\*p;
head= new ListNode\(0\); p=head;
while\(l1!=NULL\){
if\(l2!=NULL\){
temp=l1->val+l2->val+flag;
ListNode \*s=new ListNode\(0\);
if\(temp>=10\)
{
s->val=temp-10;
flag=1;}
else{
s->val=temp;
flag=0;}
p->next=s;
p=s;
l1=l1->next;l2=l2->next;
}
else{
temp=l1->val+flag;
ListNode \*s=new ListNode\(0\);
if\(temp>=10\){
s->val=temp-10;
flag=1;
}
else{
s->val=temp;
flag=0;
}
p->next=s;
p=s;l1=l1->next;
}
}
while\(l2!=NULL\){
temp=l2->val+flag;
ListNode \*s=new ListNode\(0\);
if\(temp>=10\){
s->val=temp-10;
flag=1;
}
else{
s->val=temp;
flag=0;
}
p->next=s;
p=s;
l2=l2->next;
}
if\(l1==NULL && l2==NULL && flag==1\){
ListNode \*s=new ListNode\(0\);
s->val=flag;
flag=0;
p->next=s;
p=s;
}
head=head->next;
p->next=NULL;
return head;
}
};
总结:
1.C++ 新建节点:new node(0),后面的0一定不能省。
2.考虑如果5+5=10这样的情况
3.链表添加节点的套路:
struct node{
int val;
node \*next;
}
node *create(){
node \*head,\*p;
head= new node\(0\); p=head;
while\(...\){
node \*s=new node;
s-val=123;
p->next=s;
p=s;
}
head=head->next;
p->next=NULL;
return head;
}